let qiniu = require('qiniu'); // 需要加载qiniu模块的
const accessKey = 'BX8KoFSjbcxdiJ3qUUtMbE5LVhzK3fkLowqzq-QR';
const secretKey = '6Kd6nOdjNkdg81MF5JR-cD6_tYvpzupkhPInSPN1';
const bucket = 'common-assets';

const Koa = require('koa');
const app = new Koa();
const cors = require('koa2-cors');

const fs = require('fs')
const path = require('path')

var fileName = path.resolve(__dirname, 'db-data.json')
console.log('fileName',fileName);

var readFile = (fileName)=>{
  return fs.readFileSync(fileName).toString()
}
var writeFile = (fileName, content)=>{
  // 格式化写入文件
  fs.writeFileSync(fileName, JSON.stringify(content, null, 2))
  console.log('写入完成---');
}



// 允许跨域
app.use(
  cors({
      origin: function(ctx) { //设置允许来自指定域名请求
        return '*';
          // if (ctx.url === '/test') {
          //     return '*'; // 允许来自所有域名请求
          // }
          // return 'http://localhost:8080'; //只允许http://localhost:8080这个域名的请求
      },
      maxAge: 5, //指定本次预检请求的有效期，单位为秒。
      credentials: true, //是否允许发送Cookie
      allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], //设置所允许的HTTP请求方法'
      allowHeaders: ['Content-Type', 'Authorization', 'Accept'], //设置服务器支持的所有头信息字段
      exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'] //设置获取其他自定义字段
  })
);



// 注意 放在路由前面
// 首先先得安装好中间件
// npm install koa-bodyparser --save
// 打印不出来ctx.request 是否含有body属性，但并不表示没有 好奇怪 好神奇
// // // 原文链接：https://blog.csdn.net/lert707/article/details/82839755

// const bodyParser = require('koa-bodyparser')
// app.use(bodyParser({
//   multipart: true // 是否支持 multipart-formdate 的表单
// }))

// 这个好用
const bodyparser = require('koa-body')
app.use(bodyparser({
  multipart: true // 是否支持 multipart-formdate 的表单
}))


const router = require('koa-router')(); //注意：引入的方式
// const router = new Router();



router.get('/',async ctx => {
  ctx.body = 'Hello boy';
});

router.post('/data',ctx => {
  console.log("post:",ctx.request.body);
  ctx.body = 'Hello boy data';
});

router.get('/getList',async ctx => {
    let allImgArr = readFile(fileName)
    if(!allImgArr){
      allImgArr = "[]"
    }
    allImgArr = JSON.parse(allImgArr)
    ctx.response.body = allImgArr
});

  router.post('/saveImg', async (ctx, next) => {
    console.log("上传数据--打印不出来，并不表示没有：",ctx.request, ctx.request.body);
    let {url} = ctx.request.body
    let arr = readFile(fileName)
    if(!arr){
      arr = "[]"
    }
    arr = JSON.parse(arr)
    arr.push(url);
    // 写回文件里
    await writeFile(fileName, arr)
    console.log('返回---');

    ctx.response.body = 'upload ok!'
  })
// router.post('/saveImg', ctx => {
//     console.log("上传数据sdfs:",ctx.request.body);
//   })

router.get('/token', async (ctx) => {
    console.log("有人进来---：",Date.now())
    let mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
    let options = {
        scope: bucket,
        expires: 3600 * 2 //token过期时间2小时
    };
    let putPolicy = new qiniu.rs.PutPolicy(options);
    let uploadToken = putPolicy.uploadToken(mac);
  
    if (uploadToken) {
        ctx.body = uploadToken
    } else {
        ctx.body = 'err'
    }
    
  })

  app.use(router.routes()); //作用：注册路由 启动路由
//   app.use(router.allowedMethods()); //作用： 当请求出错时的处理逻辑

  var port = 3000;
  app.listen(port,()=>{
      console.log("后台启动在：",port);
  });